#ifndef SERIALDATA_H
#define SERIALDATA_H
#include <QMainWindow>
#include <QDateTime>

class SerialData
{
public:
    double value1;
    double value2;
    double value3;

    void onSerialDataReceived(const QByteArray &data) {
        // 将接收到的数据拼接到缓冲区
        buffer.append(data);

        // 检测是否有完整帧
        while (buffer.contains("\r\n")) {
            // 找到帧结束符的位置
            int endIndex = buffer.indexOf("\r\n");

            // 提取完整帧（包括去除结束符）
            QByteArray frame = buffer.left(endIndex);
            buffer.remove(0, endIndex + 2); // +2是移除"\r\n"

            // 解析完整帧
            parseFrame(frame);
        }
    }

private:
    QByteArray buffer; // 缓冲区，用于存储未完成的帧

    void parseFrame(const QByteArray &frame) {
        // 转换为字符串并分割
        QString frameStr = QString::fromUtf8(frame);
        QStringList values = frameStr.split(',');

        if (values.size() == 3) {
            bool ok1, ok2, ok3;

            // 转换为整数
            value1 = values[0].toDouble(&ok1)/1000;
            value2 = values[1].toDouble(&ok2)/1000;
            value3 = values[2].toDouble(&ok3)/1000;

            if (ok1 && ok2 && ok3) {
                qDebug() << "Parsed Values:" << value1 << value2 << value3;
            } else {
                qDebug() << "Failed to parse values from frame:" << frameStr;
            }
        } else {
            qDebug() << "Invalid frame format:" << frameStr;
        }
    }
};

#endif // SERIALDATA_H
